const express = require("express");

const multer = require("multer");

const path = require("path");

// 创建 multer 的实例对象，通过 dest 属性指定文件的存放路径
const upload = multer({ dest: path.join(__dirname, "../uploads") });

const router = express.Router();

const article_handler = require("../router_handler/article");


const expressJoi = require("@escook/express-joi");

//导入文章的验证模块
const {
  add_article_schema,
  delete_article_schema,
  getById_article_schema,
  update_article_schema
} = require("../schema/article");

// 发布新文章
// upload.single()是一个局部生效的中间件，用来解析Fromdata格式的表单数据
// 将文件类型的数据，解析并挂在再到req.file属性中
// 将文本类型的数据，解析到并且挂在到req.bodyr中
router.post(
  "/add",
  upload.single("cover_img"),
  expressJoi(expressJoi(add_article_schema)),
  article_handler.addArticle
);

// 获取文章的列表数据
router.get("/list", article_handler.getArticle);

// 根据Id删除文章列表内容的数据
router.post(
  "/delete/:Id",
  expressJoi(delete_article_schema),
  article_handler.deleteById
);

// 根据Id获取哦文章列表内容的数据
router.get(
  "/get/:Id",
  expressJoi(getById_article_schema),
  article_handler.getArticleById
);

//更新文章的路由
router.post(
  "/edit",
  upload.single("cover_img"),
  expressJoi(update_article_schema),
  article_handler.editArticle
);

module.exports = router;

//  注意： 使用express.urlencoded()中间件无法解析 multipart/from-data 格式的请求体
// 推荐  multer来解析
